package cn.me.alphamq.common.store;

import cn.me.alphamq.common.transaction.TransactionListener;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 事务监听器的管理者
 *
 * @author f
 */
public class TxListenerManager {

    /**
     * 生产者 id 与事务监听器的映射，key：生产者 id，value：事务监听器
     */
    private static final Map<String, TransactionListener> TRANSACTION_LISTENER_MAP = new ConcurrentHashMap<>();

    /**
     * 保存生产者 id 与事务监听器的映射
     *
     * @param producerId          待保存的生产者 id
     * @param transactionListener 待保存的事务监听器
     */
    public static void put(String producerId, TransactionListener transactionListener) {
        TRANSACTION_LISTENER_MAP.put(producerId, transactionListener);
    }

    /**
     * 通过生产者 id，获取指定的事务监听器
     *
     * @param producerId 指定的生产者 id
     * @return 对应的事务监听器
     */
    public static TransactionListener get(String producerId) {
        return TRANSACTION_LISTENER_MAP.get(producerId);
    }
}
